package com.xk.utils;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
 *    用于封装Web相关的工具类，提供常用的Web操作
 */
public class WebUtils
{
    /**
     * 将字符串渲染到客户端
     *
     * @param response 渲染对象
     * @param string 待渲染的字符串
     * @return null
     */
    public static void renderString(HttpServletResponse response, String string) {
        try
        {
            response.setStatus(200);
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            response.getWriter().print(string);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 该方法用于设置文件下载时的响应头信息，包括文件类型、编码、文件名等
     * @param filename 文件名
     * @param response HttpServletResponse对象，用于设置响应头
     * @throws UnsupportedEncodingException 如果编码不支持，则抛出此异常
     */
        public static void setDownLoadHeader(String filename, HttpServletResponse response) throws UnsupportedEncodingException {
        // 设置响应头中的Content-Type为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet，表示下载的是Excel表格
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        // 设置响应头中的字符编码为utf-8
        response.setCharacterEncoding("utf-8");
        // 对文件名进行URL编码，并将空格替换成%20
        String fname= URLEncoder.encode(filename,"UTF-8").replaceAll("\\+", "%20");
        // 设置响应头中的Content-disposition，表示以附件形式下载文件，并指定文件名
        response.setHeader("Content-disposition","attachment; filename="+fname+".xlsx");
    }
}
